UNION 演算子は、2 つ以上の SELECT ステートメントの結果セットを結合するために使用されます。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
UNION 演算子は、デフォルトでは個別の値のみを選択します。重複した値を許可するには、UNION ALL を使用します。
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
このチュートリアルでは、有名なサンプル データベース「Northwind」を使用します。
以下はテーブル「Customers」(「顧客」) のサンプルです。
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
テーブル「Suppliers」(「サプライヤー」) のサンプル:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
次の SQL ステートメントは、Customers テーブルと Suppliers テーブルから都市 (異なる値のみ) を選択します。
Run SQLSELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City
次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方から都市 (重複する値) を選択します。
Run SQLSELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City
次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方からドイツの都市 (異なる値のみ) を選択します。
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
次の SQL ステートメントは、Customers テーブルと Suppliers テーブルの両方からドイツの都市 (重複する値) を選択します。
Run SQLSELECT City, Country FROM Customers
WHERE Country = 'Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country = 'Germany'
ORDER BY City
次の SQL ステートメントは、すべての顧客とサプライヤーをリストします。
Run SQLSELECT 'Customer' AS Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers
上記の「AS Type」はエイリアスであることに注意してください。 SQL エイリアスは、テーブルまたは列に一時的な名前を付けるために使用されます。 エイリアスはリクエストの継続中のみ存在します。 そこで、ここでは連絡先が「顧客」であるか「ベンダー」であるかを示す「Type」という一時的な列を作成しました。